package roles;

import etresVivant.Fourmi;
import model.Fourmiliere;
import model.Utility;

public abstract class Role {
	protected float minEsperanceVie;
	protected float maxEsperanceVie;
	protected float minPoids;
	protected float maxPoids;
	
	/**
	 * determine si c'est une ouvriere, sexuee ou soldat pour pouvoir les compter.
	 */
	protected int bOuvriere;
	protected int bSexue;
	protected int bSoldat;

	public double getMinEsperanceVie() {
		return this.minEsperanceVie;
	}

	public double getMaxEsperanceVie() {
		return this.maxEsperanceVie;
	}

	public double getMinPoids() {
		return this.minPoids;
	}

	public double getMaxPoids() {
		return this.maxPoids;
	}
	
	public int getOuvriere(){
        return bOuvriere;
    }

    public int getSexue(){
        return bSexue;
    }

    public int getSoldat(){
        return bSoldat;
    }

	/**
	 * calcul aleatoirement l'esperance de vie d'une
	 * fourmie qui est compris entre un min et un max.
	 */
	public float calculVie() {
		return Utility.aleaFloat(minEsperanceVie, maxEsperanceVie);
	}
	
	/**
	 * calcul aleatoirement le poids d'une fourmie
	 * qui est compris entre un min et un max.
	 */
	public float calculPoids() {
		return Utility.aleaFloat(minPoids, maxPoids);
	}

	/**
	 * execute les actions de la fourmi fr de la fourmiliere f
	 * selon son role.
	 * @param la fourmiliere 
	 * @param la fourmi qui a ce role.
	 */
	public abstract Object actions(Fourmiliere f, Fourmi fr);
	
	/**
	 * @return le role d'une fourmi sous fourme d'un String.
	 */
	public abstract String monRole();

}
